#ifndef INDICE_H_
#define INDICE_H_

#include "Contexto.h"

const int MAX_SIZE = 4;
const int PUNTAJE_SUMA = 10;
const int PUNTAJE_RESTA = -5;

/*
 * Contiene la coleccion de todos los posibles 
 * contextos de 2 caracteres. Un contexto se identifica
 * como la concatenación de los codigos Ascii de los
 * 2 caracteres que lo componenen.
 */
class Indice
{
	private:
		Contexto *contextos[255255];
	
	public:
		
		Indice();
		virtual ~Indice();
		
		/*
		 * Recibe 2 caracteres, los concatena, convierte en 
		 * un entero y lo devuelve.
		 */ 
		int obtenerPosContexto(char car1, char car2);
	
		/*
		 * Devuelve el contexto en la posicion
		 * determinada por el entero pasado por parámetro.
		 */ 
		Contexto* obtenerContexto(int posCtx);
		
		/*
		 * Recibe una entidad compresion que contiene el caracter a comprimir y su
		 * posición en el bloque de texto y el contexto de 2 carácteres del mismo.
		 * 
		 * Devuelve la compresion compuesta por la longitud de match y la posicion 
		 * de inicio en el bloque de texto (si hubo match).
		 */
		Compresion* generarCompresion(Compresion* comprOriginal, BloqueTexto bloque);
		
		
		
		
		
};

#endif /*INDICE_H_*/
